from pydub import AudioSegment
import os


def split_audio(file_path, output_dir, segment_length=40000, overlap=5000):
    """
    切割音频文件并返回生成的片段文件路径列表

    :param file_path: 输入的音频文件路径
    :param output_dir: 输出目录
    :param segment_length: 每段音频的时长（毫秒）
    :param overlap: 重叠时长（毫秒）
    :return: 切割后生成的文件路径列表
    """
    # 加载音频
    audio = AudioSegment.from_file(file_path)
    audio_length = len(audio)

    # 创建输出目录
    os.makedirs(output_dir, exist_ok=True)

    output_files = []  # 存储生成的文件路径

    # 切割逻辑
    start = 0
    counter = 1
    while start < audio_length:
        end = start + segment_length
        if end > audio_length:
            end = audio_length  # 最后一段
        segment = audio[start:end]

        # 保存切割文件
        out_file = os.path.join(output_dir, f"segment_{counter}.wav")
        segment.export(out_file, format="wav")
        print(f"导出: {out_file}")

        output_files.append(out_file)

        # 更新下一个开始点（注意重叠部分）
        start = start + segment_length - overlap
        counter += 1

    return output_files


# 使用示例
if __name__ == "__main__":
    input_file = "/Users/duyi/PycharmProjects/interview_voice_project/__001__data/新录音 20.m4a"  # 输入的音频文件
    output_folder = "output_segments"  # 输出目录
    result_files = split_audio(input_file, output_folder, segment_length=10000, overlap=2000)
    print("生成的文件列表：", result_files)
